Uno de los roles más comunes en el diseño de videojuegos es el de creación de mapas/niveles, este módulo está pensado para reforzar vuestra habilidad como creadores de estos contenido
Saber crear de principio a fin niveles con una buena base técnica (objetivo, ideación, despliegue, comprobación…)
Creación por parejas de 3 niveles para:
Las implementaciones disponibles ya os la damos hechas
No hace falta que cambiéis nada, pero no está prohibido
Están basadas en contenido core de UE para facilitar documentación y modificación
Tenéis libertad para crear parejas, pero los equipos en los que se combine capacidad de programación con capacidad de diseño, generalmente, funcionarán mejor
Los niveles no solo tienen que ser jugables, también dar buena sensación y buen equilibrado
Para ello haremos un poco de «trampa», permitiendo cambiar los parámetros de las mecánicas
Probaremos mucho nuestro juego, y una vez nos satisfaga, haremos evaluación cruzada
Los resultados de esta evaluación deberán servir para retocar
Evidentemente, cuando hagamos las pruebas con los equipos de nuestros compañeros, nuestra labor será que todo falle y vaya mal
Es la única manera de mejorar el gameplay
Un .zip con:
La idea es que la entrega sea el material que se ha hecho en clase (con algunas mejoras donde tenga sentido), el objetivo es no quitaros más tiempo de lo necesario fuera de las sesiones de clase
Whiteboxing es el proceso de crear los volúmenes de un nivel, sin tener en cuenta los detalles (las mallas 3D)
(También lo veréis como greyboxing, block out, brushes o brush actors)
Es el borrador de un nivel, en el que crearemos y experimentaremos con es espacio, distancias, tamaños, etc
Es una técnica muy buena para saber qué se quiere antes de «vestir» el nivel entero:
Veamos algunos aspectos básicos para crear geometría en UE
(Más información en la documentación de UE)
Figura 1: En UE se incluye la geometría como cualquier otro objeto de escena
Figura 2: Los
objetos de whiteboxing se pueden rotar, mover y
escalar como cualquier Actor
Figura 3: Los objetos tendrán, directamente, una malla de colisión que corresponderá a su geometría
En teoría se puede cambiar la colisión con
solidity, pero no funciona bien
Figura 4: Podemos pasar al modo de edición de geometría a través del menú superior
Figura 5: En este modo (Brush Editing) los vértices de los objetos son editables y puedo cambiar la forma de las mallas
Figura 6: Las operaciones booleanas me permiten «sumar» o «restar»
Es muy útil añadir colores (materiales) a los bloques para indicar su semántica:
Figura 7: Para
colorear geometría brush, elegimos el objeto,
luego todas sus caras (Shift-J) y
arrastramos material
En esta parte se va a trabajar en la creación de un nivel para un juego de mecánicas clásicas y sencillas de arcade desplazamiento lateral
Sigue un sistema básico 2D en un nivel de desplazamiento abierto (se puede ir a cualquier parte dentro de la zona delimitada)
Desplazamiento lateral sencillo (izquierda/derecha), a una velocidad parametrizable
El personaje puede agacharse, reduciendo su altura a un multiplicador (parámetro)
Salto sencillo, de altura parametrizable
Es posible añadir movimiento lateral al salto (es decir, cambiar la dirección en el aire), parametrizable respecto a la velocidad básica en el suelo
En el atributo Possible jumps se puede
cambiar el número de saltos que se pueden dar en el aire
(1, 2, 3…)
Para cambiar la potencia de lanzamiento, se puede
cambiar la variable Throw strength
Tenemos \(N\) puntos de vida (configurable como
Life, puede ser que \(N=1\)), y el contacto
con los enemigos que no daña nos resta puntos
El daño en configurable en el atributo
Damage
Para cambiar la vida inicial, tenemos la variable
Life (en el componente
Damageable)
Si caemos por un agujero, perdemos todos los puntos de
vida y la partida se reinicia (blueprint
Deep)
Las gemas son coleccionables para el jugador
Se pueden usar como objetivo (maximizar gemas cogidas), o como condición para eventos
Al ser tocados, un elemento del escenario desaparece (¿una barrera?)
Es configurable en el atributo
Barrier
Podemos eliminar enemigos de varias formas (cada golpe puede tener hacer distinto daño):
Cuando un enemigo es eliminado, desaparece de la escena
Figura 8: El nivel se acaba cuando llegamos al «portal de salida»
Ayuda mucho dar un concepto único de nivel:
Possible jumps)
Time y
HasTime en el game mode)Cada grupo:
Cada grupo hará un pequeño informe (rápido y conciso) de cada uno de los otros niveles:
Y, en general, todo lo relevante y todo lo que hemos ideo apuntando
Juego top-down, dual-stick en el que hay que atravesar una «mazmorra» de habitaciones
Movimiento WASD /palanca izquierda, se
apunta con flechas de dirección o palanca derecha
Tenemos una serie de puntos de vida, como en el juego de scroll lateral
El daño funciona de la misma manera
Al recibir daño, hay un pequeño empuje configurable en
PushDamage
Tenemos varias armas posibles
El arma normal tiene poca potencia y tiene munición infinita
(Todos los juegos necesitan una)
Cadencia de disparo baja, poca munición y ataque de dispersión
Más munición, cadencia de disparo muy alta
Hay munición global por cada arma, y munición en el cargador
Cuando se agota el cargador hay que recargar (activamente)
El tiempo de recarga (único para todas las armas) se
encuentra en Recharging time
Cada arma hace un daño específico que puede
configurarse en Weapon damage
En la clase del jugador hay varios Maps
usados para configurar las armas:
MaxMagazine (las balas que caben en
cada cargador)Weapon fire rate (cadencia de disparo
por arma)Has (las armas que tiene)Los enemigos se mueven a través de una malla de
navegación (NavMesh)
Hacen un daño Damage done, en la clase
Enemy (clase padre)
Te persigue y hace daño cuerpo a cuerpo
Se mueve mediante un árbol de comportamiento (que os explicarán más adelante)
En ShootTask está Distance
threshold para la distancia a la que ataca
También Attack period que es el tiempo
entre ataques
Si los tocas, te hacen daño
Se pueden coger un power-ups que cambia la
velocidad (Speed thing) durante Super
speed time segundos en Super speed
quantity
Solo se pueden abrir con una llave (ver más adelante)
El nivel se acaba en el portal, igual que en juego 2D
Hacer pruebas cruzadas y ver qué se puede cambiar y por qué
Después, aplicar esos cambios y mejorar los prototipo
Antes de acabar el juego, haremos un plan concreto para que se pueda cerrar y terminar el nivel completo
Cerramos el nivel y pulimos
Hacemos prueba y generamos informe (con diseño, piloto y evaluación final)
En el informe tiene que estar tanto lo que escribimos nosotros como las opiniones de nuestros compañeros
Hacer un nivel FPS
El escenario será continuo, pero habrá 3 «zonas» o entornos diferentes
Nos faltarán modelos para diferenciar el entorno, pero lo sustituiremos con formas geométricas claras
Las mecánicas van a ser las mismas que en el top-down, pero esta vez en primera persona
De hecho, puede ser interesante reutilizar las mecánicas que posiblemente hayáis añadido y comparar
El jugador aquí podrá también saltar (pero aquí no tiene más de un salto)
Figura 9: Se pueden migrar uassets entre proyectos
El valor de las historias en la experiencia de un videojuego es (como en casi todo) muy grande
Por tanto, vamos a contar, en nuestro nivel, una historia
En el proyecto hay ahora un blueprint NPC
Este componente tiene una componente de tipo
TextRender que contiene un atributo
Text que se mostrará cuando el jugador
«hable» con el actor
Además, el texto se activa automáticamente cuando
estamos a menos de Talking distance
(distancia, en el personaje principal) y el texto dura
Show time segundos en pantalla (en el
NPC)
Vamos a usar un esquema clásico principio-nudo-desenlace (aunque si encontráis una razón buena para otro esquema, adelante)
La geometría tiene que encajar con la narrativa contada (3 zonas, 3 episodios)
Es el momento de hacer pruebas piloto y, tras los resultados (que tienen que estar apuntados) retocar el prototipo de forma justificada, con lo que hayamos averiguado
La entrega se hará por correo electrónico <cleon@ucm.es>, con el material contado en la primera sesión
Fecha de entrega: 31 de marzo
Recordad: intentad enviar lo que se ha hecho en clase, no es necesario avanzar mucho más los niveles